/*
* Revision of last commit: $Rev$
* Author of last commit: $Author$
* Date of last commit: $Date$
*/

#ifndef _COMMON_EXCEPTION_H_INCLUDED_
#define _COMMON_EXCEPTION_H_INCLUDED_

#include <string>

namespace Core
{
namespace Cmn
{

/**
* @brief Exception interface
* @descr You should inherit any exception class from this one.
*/
class SteelException : public std::exception
{
};

/**
* @brief Video exception class implementation
* @descr You should use this class to describe any
*		video-related error.
*/
class VideoException
	: public SteelException
	, public std::runtime_error
{
public:
	VideoException(const std::string&);

	virtual const char* what() const;
};

/**
* @brief Audio exception class implementation
* @descr You should use this class to describe any
*		audio-related error.
*/
class AudioException
	: public SteelException
	, public std::runtime_error
{
public:
	AudioException(const std::string&);

	virtual const char* what() const;
};

/**
* @brief Physics exception class implementation
* @descr You should use this class to describe any
*		physics-related error.
*/
class PhysicsException
	: public SteelException
	, public std::runtime_error
{
public:
	PhysicsException(const std::string&);

	virtual const char* what() const;
};

} // namespace Cmn
} // namespace Core

#endif // _COMMON_EXCEPTION_H_INCLUDED_